シート操作


シートの選択
処理内容:「Sheet1」をアクティブにします。
Sub SheetSelect_1()
Worksheets("Sheet1").Activate
End Sub
|
2. シートのインデックス番号を指定してアクティブにする |
処理内容:「Sheet1」のインデックス番号を指定して「Sheet1」をアクティブにします。
Sub SheetSelect_2()
Worksheets(1).Activate
End Sub
インデックス番号は、同じ種類のシートに対して、シート見出しの並び順に基づいて左からの位置になります。
|
3. シートをアクティブにする(コード名・・オブジェクト名を指定) |
処理内容:「Sheet1」をアクティブにします。
Sub SheetSelect_3()
sheet1.Activate
End Sub
新規ブックのシートタブを右クリックしてショートカットメニューの「コードの表示」を選択すると、VBAの編集画面になり、画面の左側に「Sheet1(Sheet1)」「Sheet2(Sheet2)」「Sheet3(Sheet3)」という
文字が表示されます。
「Sheet1(Sheet1)」で、左側にある Sheet1がオブジェクト名、右側の( )内の Sheet1 がワークシート
のタブに表示されているシート名になります。
|
4. Select メソッドによりシートを選択する |
処理内容:シート名「Sheet1」を選択します。
Sub SheetSelect_4()
Worksheets("Sheet1").Select
End Sub
処理内容:Worksheets.Count でシートの枚数を取得し、これをシートのインデックス番号に利用
して最後尾のシートをアクティブにします。
Sub SheetSelect_5()
Dim N As Integer
N=ActiveWorkbook.Worksheets.Count
Worksheets(N).Activate
End Sub
|
6. 複数(Sheet1,3)のシートを選択する(インデックス番号を指定) |
処理内容:シートのインデックス番号を配列にして、左から1番目と3番目のシートを選択します。
Sub SheetSelect_6()
Worksheets(Array(1,3)).Select
End Sub
|
7. 複数(Sheet1,3)のシートを選択する(シート名を指定) |
処理内容:シート名を配列にして、「Sheet1」「Sheet3」を選択します。
Sub SheetSelect_7()
Worksheets(Array("Sheet1","Sheet3")).Select
End Sub


シート名の取得・変更
処理内容:「Sheet1」のシート名を取得してメッセージボックスに表示します。
Sub SheetName_1()
MsgBox Worksheets("sheet1").Name
End Sub
処理内容:現在選択されているシート名を取得してメッセージボックスに表示します。
Sub SheetName_2()
MsgBox ActiveSheet.Name
End Sub
|
3. アクティブシートのインデックス番号を取得する |
処理内容:現在選択されているシートのインデックス番号を取得してメッセージボックスに表示します。
Sub SheetName_3()
MsgBox ActiveSheet.Index
End Sub
|
4. アクティブシートのコードネーム(オブジェクト名)を取得する |
処理内容:現在選択されているシートのオブジェクト名を取得してメッセージボックスに表示します。
Sub SheetName_4()
MsgBox ActiveSheet.CodeName
End Sub
処理内容:現在選択されているブックのシートの枚数を取得してメッセージボックスに表示します。
Sub SheetName_5()
MsgBox ActiveWorkbook.Worksheets.Count
End Sub
処理内容:シート名「Sheet1」を「TEST」に変更する。
Sub SheetName_6()
Sheets("Sheet1").Name = "TEST"
End Sub


シートの移動・複写
処理内容:シート「TEST」を「Sheet1」の前に移動します。
Sub Sheet_Move1()
Worksheets("TEST").Move Before:=Worksheets("Sheet1")
End Sub
|
2. 同一ブック内の指定したシートの後ろに移動する |
処理内容:シート「TEST」を「Sheet1」の後ろに移動します。
Sub Sheet_Move2()
Worksheets("TEST").Move after:=Worksheets("Sheet1")
End Sub
処理内容:シート「TEST」をブック名「VBA.xls」の3番目のシートの前に移動します。
Sub Sheet_Move3()
Worksheets("TEST").Move Before:=Workbooks("VBA.xls").Sheets(3)
End Sub
処理内容:シート「Sheet4」を新規ブックに移動します。
Sub Sheet_Move4()
Worksheets("Sheet4").Move
End Sub
このプログラムを実行すると、新規ブックが自動的に作成されて「Sheet4」が移動します。
処理内容:シート「TEST」を「Sheet1」の前に複写します。
Sub Sheet_Copy1()
Worksheets("TEST").Copy Before:=Worksheets("Sheet1")
End Sub
|
6. 同一ブック内の指定したシートの後ろに複写する |
処理内容:シート「TEST」を「Sheet2」の後ろに複写します。
Sub Sheet_Copy2()
Worksheets("TEST").Copy After:=Worksheets("Sheet2")
End Sub
処理内容:シート「TEST」をブック名「VBA.xls」の2番目のシートの前に複写します。
Sub Sheet_Copy3()
Worksheets("TEST").Copy Before:=Workbooks("VBA.xls").Sheets(2)
End Sub
|
8.
別のブックの指定位置に複数のシートを同時に複写する |
処理内容:シート「TEST」を「Sheet2」の後ろに複写します。
Sub Sheet_Copy2()
X = Array("Sheet1", "Sheet2")
Sheets(X).Copy Before:=Workbooks(Book2).Sheets(2)
End Sub
処理内容:シート「TEST」を新規ブックに複写します。
Sub Sheet_Copy4()
Worksheets("TEST").Copy
End Sub
このプログラムを実行すると、新規ブックが自動的に作成されてシート「TEST」が複写されます。
|
10. 指定範囲データを複数シートの同じ位置に複写する |
処理内容:シート「Sheet1」の「A1:C5」のデータを「Sheet2」「Sheet3」の同じ位置に複写します。
Sub Sheet_Copy5()
Dim X As Variant
X = Array("Sheet1", "Sheet2", "Sheet3")
Sheets(X).FillAcrossSheets Worksheets("Sheet1").Range("A1:C5")
End Sub


シートの追加・削除
|
1.
選択したシートの前へシートを追加する(シート名は指定せず) |
処理内容:シート「TEST」の前に新しいシートを追加します。
Sub Sheet_Add1()
Sheets("TEST").Select
ActiveWorkbook.Worksheets.Add
End Sub
|
2.
アクティブシートの前へシートを追加する(シート名を指定) |
処理内容:現在選択されているシートの前に新しいシート「Dummy」を追加します。
Sub Sheet_Add2()
Sheets.Add.Name = "Dummy"
End Sub
処理内容:現在選択されているシートの後ろに新しいシートを追加します。
Sub Sheet_Add3()
Dim シート名 As String
Sheets("TEST").Select
シート名 = ActiveSheet.Name
Worksheets.Add after:=Worksheets(シート名)
End Sub
処理内容:シートの最後尾に新しいシートを追加します。
Sub Sheet_Add4()
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
End Sub
処理内容:シート「検索シート名」を検索し、無ければ追加します。
Sub Sheet_Add5()
Scheck = 0
For Each sheet_name In Worksheets
If sheet_name.Name = ("検索シート名") Then
Scheck = 1
Exit For
End If
Next
If Scheck = 0 Then
Sheets.Add.Name = "検索シート名"
End If
End Sub


処理内容:現在選択されているシートを削除します。
Sub Sheet_Delete1()
ActiveSheet.Delete
End Sub
処理内容:シート「Sheet1」を削除します。
Sub Sheet_Delete2()
Worksheets("Sheet1").Delete
End Sub
処理内容:削除確認メッセージを出さずにシート「Sheet1」を削除します。
Sub Sheet_Delete3()
Application.DisplayAlerts = False
Worksheets("Sheet1").Delete
Application.DisplayAlerts = True
End Sub


シートの表示・非表示
処理内容:シート「TEST」を非表示にします。
Sub Sheet_Visible1()
Worksheets("TEST").Visible=False
End Sub
処理内容:非表示にしたシート「TEST」を再表示します。
Sub Sheet_Visible2()
Worksheets("TEST").Visible=True
End Sub
|
3. 指定位置以降、最後尾までのシートを非表示にする |
処理内容:左から2番目のシート以降、最後尾までのシートを非表示にします。
Sub Sheet_Visible3()
Scount=ActiveWorkbook.Worksheets.Count
For J = 2 To Scount
Worksheets(J).Visible = False
Next J
End Sub
処理内容:すべてのシートを検索して非表示であれば再表示します。
Sub Sheet_Visible4()
Dim myWS As Worksheet
For Each myWS In Worksheets
myWS.Visible = True
Next
End Sub
処理内容:Excel操作でユーザーが再表示できないようにシート「TEST」を非表示にします。(VBAで再表示は可能)
Sub Sheet_Visible5()
Worksheets("TEST").Visible = xlVeryHidden
End Sub
処理内容:Excel操作でユーザーが再表示できないように非表示にしたシート「TEST」を再表示します。
Sub Sheet_Visible6()
Worksheets("TEST").Visible = True
End Sub
処理内容:シート見出し(タブ)をすべて非表示にします。
Sub Sheet_Visible7()
ActiveWindow.DisplayWorkbookTabs = False
End Sub
処理内容:シート見出し(タブ)をすべて再表示します。
Sub Sheet_Visible8()
ActiveWindow.DisplayWorkbookTabs = True
End Sub


シートの保護・非保護"
Protectメソッド(ワークシートの保護)の構文と意味
構文:expression.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly)
引 数 |
内 容 |
Password |
設定したとき:パスワード文字列を指定(大文字と小文字を区別)。保護を解除するにはそのパスワードが必要。
省略したとき:パスワードの使用なしで保護解除できる。 |
DrawingObjects |
描画オブジェクトを保護させるには、True(既定値)を指定。 |
Contents |
オブジェクト(セル)の内容を保護させるには、True(既定値)を設定 |
Scenarios |
シナリオを保護するには、True(既定値)を指定。 |
UserInterfaceOnly |
Trueを指定すると画面上からの変更は保護されるが、マクロからの変更は保護されない。
省略したとき:マクロからも、画面上も変更することができない。
|
処理内容:現在表示されているシート全体を保護します。
Sub Sheet_Protect1()
ActiveSheet.Unprotect
ActiveSheet.Protect DrawingObjects:=True, Contents:=True
End Sub
|
2.
計算式入力セルだけを保護し、他のセルは書き込み可能とする |
処理内容:数式が入力されているセルだけを保護し、他のセルは書き込み可能とします。
Sub Sheet_Protect2()
Cells.Select
With Selection
.Locked = False
.Specialcells(xlCellTypeFormulas).Locked = True
End With
ActiveSheet.Protect
End Sub
|
3. シートの特定のセルだけ書込み可能とし、他のセルは保護する |
処理内容:セル「A1:G3」だけ書き込み可能とし、他のセルは保護します。
Sub Sheet_Protect3()
With Worksheets("Sheet1")
.Range("A1:G3").Locked = False
.protect
End With
End Sub
処理内容:現在表示されているシートの保護を解除します。
Sub Sheet_Protect4()
ActiveSheet.Unprotect
End Sub


シートの検索
処理内容:シートを検索して、シート「TEST」が見つかったら表示します。
Sub Sheet_Search1()
Dim N As Integer,Check As Integer,I As Integer
On Error Resume Next
Check = 1
N = Worksheets.Count
For I = 1 To N
If Worksheets(I).Name = ("TEST") Then
Check = 0
Worksheets("TEST").Select
Exit For
End If
Next
If Check = 1 Then
MsgBox "シート「TEST」が見つかりません"
On Error GoTo 0
Exit Sub
End If
End Sub
処理内容:シートを検索してシート「TEST」が見つかれば「存在します」、見つからなければ「存在
しません」をメッセージボックスに表示します。
Sub Sheet_Search2()
Dim Sh As Worksheet
On Error GoTo ErrTrap
Set Sh = Sheets("TEST")
MsgBox "シート「TEST」を表示します。"
Sh.Select
Set Sh = Nothing
Exit Sub
ErrTrap:
MsgBox "シート「TEST」は存在しません。"
End Sub

